package org.algorithm.biubiu.wheel_1.BFS算法;

import org.algorithm.common.TreeNode;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 给定一个二叉树，找出其最小深度。
 * <p>
 * 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
 * <p>
 * 说明：叶子节点是指没有子节点的节点。
 * <p>  111. 二叉树的最小深度
 * https://leetcode.cn/problems/minimum-depth-of-binary-tree/
 */
public class $5月12日$二叉树的最小深度 {


    /**
     *
     */
    public int minDepth(TreeNode root) {
        int res = 0;
        if(root==null) return res;
        Queue<TreeNode> queue = new LinkedList();
        queue.add(root);
        while(!queue.isEmpty()){
            int sz = queue.size();
            res++;
            for(int i = 0;i<sz;i++){
                TreeNode node = queue.poll();
                if(node.left==null && node.right==null){
                    return res;
                }
                if(node.right!=null) queue.add(node.right);
                if(node.left!=null) queue.add(node.left);
            }


        }
        return res;
    }
}
